While photograph applications, video applications, and other content sharing applications have become increasingly popular, the services and features currently provided by these sorts of applications come with inherent limitations. Recognizing these limitations, online content management systems (“CMSs”) offer a user a convenient portal for cloud storage and interactivity with his or her content. In such systems, as well as in corresponding applications running on user devices, users may upload and perform various operations to content, such as photographs and videos, for example. Some of these operations may be quite complex, and may involve large amounts of content. Such operations may, for example, include uploading photographs and/or videos to a user account, receiving shares of photographs and/or videos from other users, and copying photographs and/or videos to a user account, sharing photographs and/or videos with other users of the content management system, creating and sharing albums or collections of content items, and/or interacting with the content items, or any interaction with content, or any combination thereof.
Conventionally, there are various options available where such a local application may be implemented. For example, one option may be to implement the application locally as a standalone application. This option would rely on some sort of messaging feature to pass content received from other users to the user device. This option, however, limits the amount of content a user may store in their account to the capacity of their user device running the local application, and requires complex messaging and management of data creation to replicate the state of content items that are exchanged or shared across all relevant user devices.
Another option may be, for example, an application implemented on a server with every local action being supported by the server. In this scenario, the server controls the “existence” of content in any user account, and the server must record any operations (e.g., modifications, shares, messages, etc.) between the user device and the user, or the user device and other devices. This option may afford many opportunities for storing large amounts of data, as well as managing sharing and other interactions between users of the content management system. For example, shared virtual spaces where various users of the content management system are “members” may be provided to share content and post messages related to such content in a separate manner as opposed to simply in a user account.
However, this option has drawbacks because the server driven model limits local interaction to only when connectivity is high, or meets a certain threshold. If a user device is weakly, or intermittently connected to the content management system server across a data network (e.g., a smartphone connected to a cellular network), content created, and actions taken, on the user device that require the content management system server to store, acknowledge, organize, and/or manage the content cannot be processed until the appropriate connectivity is restored. For example, a user may upload a collection of photographs from his/her smartphone using a content management system application, but may not see the photographs appear in their user account for many hours. Because the photographs do not yet appear within the account, the user cannot share them with others, review them, modify them, or perform any other action to the photographs. This may cause the user experience to be extremely dissatisfying and frustrating.
Thus, it is highly desirable for a user to be able to experience a seamless response of a content management system application running on his or her user device, to (i) the creation of content, (ii) the addition of photos or messages to a user account or other user accessible data structure, (iii) the downloading of shared content to a personal account on the content management system, and to (iv) other responses to his or her interactions with the application. However, unless connectivity to the server is guaranteed to be sufficient, this may not always be possible. This may correspond to the fact that while the connectivity on a user device between the user interface and the underlying client software is permanent, the connection between the underlying client software and the server may often be intermittent.
Thus, it would be beneficial to provide users of content management systems with the experience of a seamless response of a content management system application running on their user device as if all backend operations were occurring locally.